查看原文
其他

PDF文档转换成图片

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:王碧琪
文字编辑:方    言
技术总编:张    邯



Python云端培训课程报名结束!

     爬虫俱乐部将于2020年7月25日至28日举办的Python编程技术训练营招生工作已圆满结束,感谢大家对我们的支持!



Stata云端培训课程在腾讯课堂上线啦!

      爬虫俱乐部于2020年7月中旬线上举行的Stata编程技术培训课程在腾讯课堂上线啦!课程通过案例教学模式,帮助学员在短期内掌握Stata的基本命令、编程、数据处理以及结果输出等技术,并对Stata16的实用新功能做了详细介绍。

现在关注本公众号,即可获得课程链接;同时转发该推文立即领取600元课程优惠券,集赞50个再领200元课程优惠!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!

PDF是一种稳定性和安全性都很强的格式文件,有很多资料会选择采用PDF格式来保存,但是文件中的文字内容可以复制。为了防止这一点,我们可以将PDF再转换成JPG图片,这样就更加保护PDF文件中的信息了。之前我们了解了pymupdf库可以提取PDF中的文本信息,今天我们继续用它把PDF转换成图片文件。

一、简介

使用的库仍然是pymupdf。待处理文档名为“demo1”,共有三页,内容如下:

二、转换处理

(一)导入文件

import fitzdoc = fitz.open(f".\\pdfs\\ demo1.pdf")print(doc)print(doc.pageCount)

运行结果为:

fitz.Document('.\pdfs\demo1.pdf')3

结果显示,fitz处理之后的文档“demo1”文件共有3页。

(二)转换成图片

下面是几个常用的用法。

方法含义
Matrix.preRotate(deg)旋转。填入旋转角度(以度为单位)。
Matrix.preScale(sx,sy)缩放。sx表示x方向上的缩放系数,sy表示y方向上的缩放系数。
Matrix.preShear(sx,sy)剪切(倾斜)。sx表示x方向上的剪切效果,sy表示y方向上的剪切效果。
init(self, zoom-x, zoom-y)指定缩放值。
init(self, shear-x, shear-y, 1)指定剪切值。

首先设置转换的参数。利用Matrix()可以设置图片的大小、旋转的角度等。

rotate = int(0) # 设置图片的旋转角度为0zoom_x = 2.0 # 设置图片相对于PDF文件在X轴上的缩放比例为2zoom_y = 2.0 # 设置图片相对于PDF文件在Y轴上的缩放比例为2trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)print(f"{filename}开始转换...")

接下来进行转换,利用page.getPixmap()用于创建一个pixmap,把设置好的转换参数填入。Pixmap(“pixel maps”)是mupdf渲染功能的核心。它们代表像素的平面矩形集。每个像素由定义其颜色的多个字节(“components”)以及定义其透明度的可选alpha字节描述。
再用writeImage( )把转换好的图片输出。它的语法是:writeImage(filename, output=None)。filename填入文件名,output是输出的图片格式,默认值为文件的扩展名,无法识别时假定为png。

for pg in range(doc.pageCount): page = doc[pg] # 获得第pg页 pm = page.getPixmap(matrix=trans, alpha=False) # 创建pixmap pm.writeImage(f"{filename}-{pg+1}.jpg") # 输出为jpg图片格式print(f"{filename}转换完成!")

运行结果如下:

demo1开始转换...demo1转换完成!

去看一下工作路径下生成的图片:

大功告成!利用pymupdf库的几个函数成功把PDF文档变成了不可编辑的图片。







对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
split和nsplit助你轻松拆分

集成学习介绍之三——Stacking算法

PyMuPDF提取文本信息

Mylabels命令介绍  

用WordStat看中国日报新闻  

数据集的划分——交叉验证法

大数据视角下的大学录取分数排行
集成学习介绍之二——Boosting算法

PDF文本信息提取(二)

取长补短、互通有无 ——集成学习介绍之Bagging &随机森林
PDF表格信息提取
神经网络——brain
marktouse标记使用变量
换种视角看问题——支持向量机(SVM)
提取PDF文本信息:入门
毕业季|b站《入海》评论爬取
Stata云端课程来啦

关于我们



微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存